home *** CD-ROM | disk | FTP | other *** search
/ This Disc Bytes! / Power Computing - The Disc 2 - This Disc Bytes.ISO / mac / CodeWarrior 7 Lite for 68K / MacOS Support / Headers / Universal Headers / Speech.h < prev    next >
Text File  |  1995-07-06  |  14KB  |  385 lines

  1. /*
  2.      File:        Speech.h
  3.  
  4.      Contains:    Speech Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.1 in “MPW Latest” on ETO #18
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. */
  19.  
  20. #ifndef __SPEECH__
  21. #define __SPEECH__
  22.  
  23.  
  24. #ifndef __TYPES__
  25. #include <Types.h>
  26. #endif
  27. /*    #include <ConditionalMacros.h>                                */
  28.  
  29. #ifndef __MEMORY__
  30. #include <Memory.h>
  31. #endif
  32. /*    #include <MixedMode.h>                                        */
  33.  
  34. #ifndef __FILES__
  35. #include <Files.h>
  36. #endif
  37. /*    #include <OSUtils.h>                                        */
  38. /*    #include <Finder.h>                                            */
  39.  
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43.  
  44. #if PRAGMA_ALIGN_SUPPORTED
  45. #pragma options align=mac68k
  46. #endif
  47.  
  48. #if PRAGMA_IMPORT_SUPPORTED
  49. #pragma import on
  50. #endif
  51.  
  52.  
  53. enum {
  54.     kTextToSpeechSynthType        = 'ttsc',
  55.     kTextToSpeechVoiceType        = 'ttvd',
  56.     kTextToSpeechVoiceFileType    = 'ttvf',
  57.     kTextToSpeechVoiceBundleType = 'ttvb'
  58. };
  59.  
  60. enum {
  61.     kNoEndingProsody            = 1,
  62.     kNoSpeechInterrupt            = 2,
  63.     kPreflightThenPause            = 4
  64. };
  65.  
  66. enum {
  67.     kImmediate                    = 0,
  68.     kEndOfWord                    = 1,
  69.     kEndOfSentence                = 2
  70. };
  71.  
  72. /*------------------------------------------*/
  73. /* GetSpeechInfo & SetSpeechInfo selectors    */
  74. /*------------------------------------------*/
  75. enum {
  76.     soStatus                    = 'stat',
  77.     soErrors                    = 'erro',
  78.     soInputMode                    = 'inpt',
  79.     soCharacterMode                = 'char',
  80.     soNumberMode                = 'nmbr',
  81.     soRate                        = 'rate',
  82.     soPitchBase                    = 'pbas',
  83.     soPitchMod                    = 'pmod',
  84.     soVolume                    = 'volm',
  85.     soSynthType                    = 'vers',
  86.     soRecentSync                = 'sync',
  87.     soPhonemeSymbols            = 'phsy',
  88.     soCurrentVoice                = 'cvox',
  89.     soCommandDelimiter            = 'dlim',
  90.     soReset                        = 'rset',
  91.     soCurrentA5                    = 'myA5',
  92.     soRefCon                    = 'refc',
  93.     soTextDoneCallBack            = 'tdcb',
  94.     soSpeechDoneCallBack        = 'sdcb',
  95.     soSyncCallBack                = 'sycb',
  96.     soErrorCallBack                = 'ercb',
  97.     soPhonemeCallBack            = 'phcb',
  98.     soWordCallBack                = 'wdcb',
  99.     soSynthExtension            = 'xtnd',
  100.     soSoundOutput                = 'sndo'
  101. };
  102.  
  103. /*------------------------------------------*/
  104. /* Speaking Mode Constants                     */
  105. /*------------------------------------------*/
  106. enum {
  107.     modeText                    = 'TEXT',                        /* input mode constants                     */
  108.     modePhonemes                = 'PHON',
  109.     modeNormal                    = 'NORM',                        /* character mode and number mode constants */
  110.     modeLiteral                    = 'LTRL'
  111. };
  112.  
  113. enum {
  114.     soVoiceDescription            = 'info',
  115.     soVoiceFile                    = 'fref'
  116. };
  117.  
  118. struct SpeechChannelRecord {
  119.     long                            data[1];
  120. };
  121. typedef struct SpeechChannelRecord SpeechChannelRecord;
  122.  
  123. typedef SpeechChannelRecord *SpeechChannel;
  124.  
  125. struct VoiceSpec {
  126.     OSType                            creator;
  127.     OSType                            id;
  128. };
  129. typedef struct VoiceSpec VoiceSpec;
  130.  
  131.  
  132. enum {
  133.     kNeuter                        = 0,
  134.     kMale                        = 1,
  135.     kFemale                        = 2
  136. };
  137.  
  138. struct VoiceDescription {
  139.     long                            length;
  140.     VoiceSpec                        voice;
  141.     long                            version;
  142.     Str63                            name;
  143.     Str255                            comment;
  144.     short                            gender;
  145.     short                            age;
  146.     short                            script;
  147.     short                            language;
  148.     short                            region;
  149.     long                            reserved[4];
  150. };
  151. typedef struct VoiceDescription VoiceDescription;
  152.  
  153. struct VoiceFileInfo {
  154.     FSSpec                            fileSpec;
  155.     short                            resID;
  156. };
  157. typedef struct VoiceFileInfo VoiceFileInfo;
  158.  
  159. struct SpeechStatusInfo {
  160.     Boolean                            outputBusy;
  161.     Boolean                            outputPaused;
  162.     long                            inputBytesLeft;
  163.     short                            phonemeCode;
  164. };
  165. typedef struct SpeechStatusInfo SpeechStatusInfo;
  166.  
  167. struct SpeechErrorInfo {
  168.     short                            count;
  169.     OSErr                            oldest;
  170.     long                            oldPos;
  171.     OSErr                            newest;
  172.     long                            newPos;
  173. };
  174. typedef struct SpeechErrorInfo SpeechErrorInfo;
  175.  
  176. struct SpeechVersionInfo {
  177.     OSType                            synthType;
  178.     OSType                            synthSubType;
  179.     OSType                            synthManufacturer;
  180.     long                            synthFlags;
  181.     NumVersion                        synthVersion;
  182. };
  183. typedef struct SpeechVersionInfo SpeechVersionInfo;
  184.  
  185. struct PhonemeInfo {
  186.     short                            opcode;
  187.     Str15                            phStr;
  188.     Str31                            exampleStr;
  189.     short                            hiliteStart;
  190.     short                            hiliteEnd;
  191. };
  192. typedef struct PhonemeInfo PhonemeInfo;
  193.  
  194. struct PhonemeDescriptor {
  195.     short                            phonemeCount;
  196.     PhonemeInfo                        thePhonemes[1];
  197. };
  198. typedef struct PhonemeDescriptor PhonemeDescriptor;
  199.  
  200. struct SpeechXtndData {
  201.     OSType                            synthCreator;
  202.     Byte                            synthData[2];
  203. };
  204. typedef struct SpeechXtndData SpeechXtndData;
  205.  
  206. struct DelimiterInfo {
  207.     Byte                            startDelimiter[2];
  208.     Byte                            endDelimiter[2];
  209. };
  210. typedef struct DelimiterInfo DelimiterInfo;
  211.  
  212. typedef pascal void (*SpeechTextDoneProcPtr)(SpeechChannel parameter0, long parameter1, Ptr *parameter2, long *parameter3, long *parameter4);
  213. typedef pascal void (*SpeechDoneProcPtr)(SpeechChannel parameter0, long parameter1);
  214. typedef pascal void (*SpeechSyncProcPtr)(SpeechChannel parameter0, long parameter1, OSType parameter2);
  215. typedef pascal void (*SpeechErrorProcPtr)(SpeechChannel parameter0, long parameter1, OSErr parameter2, long parameter3);
  216. typedef pascal void (*SpeechPhonemeProcPtr)(SpeechChannel parameter0, long parameter1, short parameter2);
  217. typedef pascal void (*SpeechWordProcPtr)(SpeechChannel parameter0, long parameter1, long parameter2, short parameter3);
  218.  
  219. #if GENERATINGCFM
  220. typedef UniversalProcPtr SpeechTextDoneUPP;
  221. typedef UniversalProcPtr SpeechDoneUPP;
  222. typedef UniversalProcPtr SpeechSyncUPP;
  223. typedef UniversalProcPtr SpeechErrorUPP;
  224. typedef UniversalProcPtr SpeechPhonemeUPP;
  225. typedef UniversalProcPtr SpeechWordUPP;
  226. #else
  227. typedef SpeechTextDoneProcPtr SpeechTextDoneUPP;
  228. typedef SpeechDoneProcPtr SpeechDoneUPP;
  229. typedef SpeechSyncProcPtr SpeechSyncUPP;
  230. typedef SpeechErrorProcPtr SpeechErrorUPP;
  231. typedef SpeechPhonemeProcPtr SpeechPhonemeUPP;
  232. typedef SpeechWordProcPtr SpeechWordUPP;
  233. #endif
  234.  
  235. enum {
  236.     uppSpeechTextDoneProcInfo = kPascalStackBased
  237.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SpeechChannel)))
  238.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  239.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Ptr*)))
  240.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long*)))
  241.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long*))),
  242.     uppSpeechDoneProcInfo = kPascalStackBased
  243.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SpeechChannel)))
  244.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  245.     uppSpeechSyncProcInfo = kPascalStackBased
  246.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SpeechChannel)))
  247.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  248.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(OSType))),
  249.     uppSpeechErrorProcInfo = kPascalStackBased
  250.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SpeechChannel)))
  251.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  252.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(OSErr)))
  253.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long))),
  254.     uppSpeechPhonemeProcInfo = kPascalStackBased
  255.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SpeechChannel)))
  256.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  257.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short))),
  258.     uppSpeechWordProcInfo = kPascalStackBased
  259.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SpeechChannel)))
  260.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  261.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  262.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
  263. };
  264.  
  265. #if GENERATINGCFM
  266. #define NewSpeechTextDoneProc(userRoutine)        \
  267.         (SpeechTextDoneUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSpeechTextDoneProcInfo, GetCurrentArchitecture())
  268. #define NewSpeechDoneProc(userRoutine)        \
  269.         (SpeechDoneUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSpeechDoneProcInfo, GetCurrentArchitecture())
  270. #define NewSpeechSyncProc(userRoutine)        \
  271.         (SpeechSyncUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSpeechSyncProcInfo, GetCurrentArchitecture())
  272. #define NewSpeechErrorProc(userRoutine)        \
  273.         (SpeechErrorUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSpeechErrorProcInfo, GetCurrentArchitecture())
  274. #define NewSpeechPhonemeProc(userRoutine)        \
  275.         (SpeechPhonemeUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSpeechPhonemeProcInfo, GetCurrentArchitecture())
  276. #define NewSpeechWordProc(userRoutine)        \
  277.         (SpeechWordUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSpeechWordProcInfo, GetCurrentArchitecture())
  278. #else
  279. #define NewSpeechTextDoneProc(userRoutine)        \
  280.         ((SpeechTextDoneUPP) (userRoutine))
  281. #define NewSpeechDoneProc(userRoutine)        \
  282.         ((SpeechDoneUPP) (userRoutine))
  283. #define NewSpeechSyncProc(userRoutine)        \
  284.         ((SpeechSyncUPP) (userRoutine))
  285. #define NewSpeechErrorProc(userRoutine)        \
  286.         ((SpeechErrorUPP) (userRoutine))
  287. #define NewSpeechPhonemeProc(userRoutine)        \
  288.         ((SpeechPhonemeUPP) (userRoutine))
  289. #define NewSpeechWordProc(userRoutine)        \
  290.         ((SpeechWordUPP) (userRoutine))
  291. #endif
  292.  
  293. #if GENERATINGCFM
  294. #define CallSpeechTextDoneProc(userRoutine, parameter0, parameter1, parameter2, parameter3, parameter4)        \
  295.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppSpeechTextDoneProcInfo, (parameter0), (parameter1), (parameter2), (parameter3), (parameter4))
  296. #define CallSpeechDoneProc(userRoutine, parameter0, parameter1)        \
  297.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppSpeechDoneProcInfo, (parameter0), (parameter1))
  298. #define CallSpeechSyncProc(userRoutine, parameter0, parameter1, parameter2)        \
  299.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppSpeechSyncProcInfo, (parameter0), (parameter1), (parameter2))
  300. #define CallSpeechErrorProc(userRoutine, parameter0, parameter1, parameter2, parameter3)        \
  301.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppSpeechErrorProcInfo, (parameter0), (parameter1), (parameter2), (parameter3))
  302. #define CallSpeechPhonemeProc(userRoutine, parameter0, parameter1, parameter2)        \
  303.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppSpeechPhonemeProcInfo, (parameter0), (parameter1), (parameter2))
  304. #define CallSpeechWordProc(userRoutine, parameter0, parameter1, parameter2, parameter3)        \
  305.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppSpeechWordProcInfo, (parameter0), (parameter1), (parameter2), (parameter3))
  306. #else
  307. #define CallSpeechTextDoneProc(userRoutine, parameter0, parameter1, parameter2, parameter3, parameter4)        \
  308.         (*(userRoutine))((parameter0), (parameter1), (parameter2), (parameter3), (parameter4))
  309. #define CallSpeechDoneProc(userRoutine, parameter0, parameter1)        \
  310.         (*(userRoutine))((parameter0), (parameter1))
  311. #define CallSpeechSyncProc(userRoutine, parameter0, parameter1, parameter2)        \
  312.         (*(userRoutine))((parameter0), (parameter1), (parameter2))
  313. #define CallSpeechErrorProc(userRoutine, parameter0, parameter1, parameter2, parameter3)        \
  314.         (*(userRoutine))((parameter0), (parameter1), (parameter2), (parameter3))
  315. #define CallSpeechPhonemeProc(userRoutine, parameter0, parameter1, parameter2)        \
  316.         (*(userRoutine))((parameter0), (parameter1), (parameter2))
  317. #define CallSpeechWordProc(userRoutine, parameter0, parameter1, parameter2, parameter3)        \
  318.         (*(userRoutine))((parameter0), (parameter1), (parameter2), (parameter3))
  319. #endif
  320.  
  321. extern pascal NumVersion SpeechManagerVersion(void)
  322.  FOURWORDINLINE(0x203C, 0x0000, 0x000C, 0xA800);
  323. extern pascal OSErr MakeVoiceSpec(OSType creator, OSType id, VoiceSpec *voice)
  324.  FOURWORDINLINE(0x203C, 0x0604, 0x000C, 0xA800);
  325. extern pascal OSErr CountVoices(short *numVoices)
  326.  FOURWORDINLINE(0x203C, 0x0108, 0x000C, 0xA800);
  327. extern pascal OSErr GetIndVoice(short index, VoiceSpec *voice)
  328.  FOURWORDINLINE(0x203C, 0x030C, 0x000C, 0xA800);
  329. extern pascal OSErr GetVoiceDescription(VoiceSpec *voice, VoiceDescription *info, long infoLength)
  330.  FOURWORDINLINE(0x203C, 0x0610, 0x000C, 0xA800);
  331. extern pascal OSErr GetVoiceInfo(VoiceSpec *voice, OSType selector, void *voiceInfo)
  332.  FOURWORDINLINE(0x203C, 0x0614, 0x000C, 0xA800);
  333. extern pascal OSErr NewSpeechChannel(VoiceSpec *voice, SpeechChannel *chan)
  334.  FOURWORDINLINE(0x203C, 0x0418, 0x000C, 0xA800);
  335. extern pascal OSErr DisposeSpeechChannel(SpeechChannel chan)
  336.  FOURWORDINLINE(0x203C, 0x021C, 0x000C, 0xA800);
  337. extern pascal OSErr SpeakString(StringPtr s)
  338.  FOURWORDINLINE(0x203C, 0x0220, 0x000C, 0xA800);
  339. extern pascal OSErr SpeakText(SpeechChannel chan, Ptr textBuf, long textBytes)
  340.  FOURWORDINLINE(0x203C, 0x0624, 0x000C, 0xA800);
  341. extern pascal OSErr SpeakBuffer(SpeechChannel chan, Ptr textBuf, long textBytes, long controlFlags)
  342.  FOURWORDINLINE(0x203C, 0x0828, 0x000C, 0xA800);
  343. extern pascal OSErr StopSpeech(SpeechChannel chan)
  344.  FOURWORDINLINE(0x203C, 0x022C, 0x000C, 0xA800);
  345. extern pascal OSErr StopSpeechAt(SpeechChannel chan, long whereToStop)
  346.  FOURWORDINLINE(0x203C, 0x0430, 0x000C, 0xA800);
  347. extern pascal OSErr PauseSpeechAt(SpeechChannel chan, long whereToPause)
  348.  FOURWORDINLINE(0x203C, 0x0434, 0x000C, 0xA800);
  349. extern pascal OSErr ContinueSpeech(SpeechChannel chan)
  350.  FOURWORDINLINE(0x203C, 0x0238, 0x000C, 0xA800);
  351. extern pascal short SpeechBusy(void)
  352.  FOURWORDINLINE(0x203C, 0x003C, 0x000C, 0xA800);
  353. extern pascal short SpeechBusySystemWide(void)
  354.  FOURWORDINLINE(0x203C, 0x0040, 0x000C, 0xA800);
  355. extern pascal OSErr SetSpeechRate(SpeechChannel chan, Fixed rate)
  356.  FOURWORDINLINE(0x203C, 0x0444, 0x000C, 0xA800);
  357. extern pascal OSErr GetSpeechRate(SpeechChannel chan, Fixed *rate)
  358.  FOURWORDINLINE(0x203C, 0x0448, 0x000C, 0xA800);
  359. extern pascal OSErr SetSpeechPitch(SpeechChannel chan, Fixed pitch)
  360.  FOURWORDINLINE(0x203C, 0x044C, 0x000C, 0xA800);
  361. extern pascal OSErr GetSpeechPitch(SpeechChannel chan, Fixed *pitch)
  362.  FOURWORDINLINE(0x203C, 0x0450, 0x000C, 0xA800);
  363. extern pascal OSErr SetSpeechInfo(SpeechChannel chan, OSType selector, void *speechInfo)
  364.  FOURWORDINLINE(0x203C, 0x0654, 0x000C, 0xA800);
  365. extern pascal OSErr GetSpeechInfo(SpeechChannel chan, OSType selector, void *speechInfo)
  366.  FOURWORDINLINE(0x203C, 0x0658, 0x000C, 0xA800);
  367. extern pascal OSErr TextToPhonemes(SpeechChannel chan, Ptr textBuf, long textBytes, Handle phonemeBuf, long *phonemeBytes)
  368.  FOURWORDINLINE(0x203C, 0x0A5C, 0x000C, 0xA800);
  369. extern pascal OSErr UseDictionary(SpeechChannel chan, Handle dictionary)
  370.  FOURWORDINLINE(0x203C, 0x0460, 0x000C, 0xA800);
  371.  
  372. #if PRAGMA_IMPORT_SUPPORTED
  373. #pragma import off
  374. #endif
  375.  
  376. #if PRAGMA_ALIGN_SUPPORTED
  377. #pragma options align=reset
  378. #endif
  379.  
  380. #ifdef __cplusplus
  381. }
  382. #endif
  383.  
  384. #endif /* __SPEECH__ */
  385.